﻿//************************************************************************************************************
// CoNatural.Data.dll
// Author: Roger Torres
//************************************************************************************************************
// You can use, modify, and distribute the source code and executable programs based on the source code.
// This source code is provided "as is" and without warranties as to performance or merchantability. 
// The author and/or distributors of this source code may have made statements about this source code. 
// Any such statements do not constitute warranties and shall not be relied on by the user in deciding 
// whether to use this source code. This source code is provided without any express or implied warranties 
// whatsoever. Because of the diversity of conditions and hardware under which this source code may be used, 
// no warranty of fitness for a particular purpose is offered. The user is advised to test the source code 
// thoroughly before relying on it. The user must assume the entire risk of using the source code.
//************************************************************************************************************

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.CodeDom.Compiler;
using Microsoft.CSharp;

namespace CoNatural.Data.VisualStudio.AddIn.Tools {
	public class CommandCompiler {
		static public Type[] CompileCommand(string source, params string[] references) {
			CompilerResults results = Compiler.Compile(source, references);
			Type[] types = results.CompiledAssembly.GetTypes();
			var commands = new List<Type>();
			foreach (Type type in types)
				if (type.GetInterface(typeof(ICommand).FullName) != null)
					commands.Add(type);
			return commands.ToArray();
		}
	}
}
